package com.mrlv.redis.config;

import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;

import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;

/**
 * @description: redis序列化类   专门序列化   key  使用
 * @author CW6333  Bobo
 * @date 2021/4/26 10:37
 * @version 1.0
 */
public class MrlvRedisStringSerializer implements RedisSerializer<String> {

    private final Charset charset;

    public MrlvRedisStringSerializer() {
        this(StandardCharsets.UTF_8);
    }

    public MrlvRedisStringSerializer(Charset charset) {
        Assert.notNull(charset,"Charset must not be null!");
        this.charset = charset;
    }

    /**
     * Redis set 的时候序列化
     * @param string
     * @return
     */
    @Override
    public byte[] serialize(@Nullable String string) {
        return (string == null ? null : string.getBytes(charset));
    }


    /**
     * Redis get 反序列化方法
     * @param bytes
     * @return
     */
    @Override
    public String deserialize(@Nullable byte[] bytes) {
        //获取到要保存的key
        //String saveKey = new String(bytes, charset);
        //TODO 可以自定义处理，加默认前缀，是针对多租户来处理的
        return (bytes == null ? null : new String(bytes, charset));
    }

}
